//
// Created by HP on 2022/2/1.
//

#ifndef TMC_SIMPLE_RENDER_SYSTEM_H
#define TMC_SIMPLE_RENDER_SYSTEM_H

#include "tmc_utils.h"
#include "tmc_shader.h"
#include "tmc_game_object.h"
#include "tmc_camera.h"

// std
#include <string>

namespace tmc {
    class SimpleRenderSystem {
    public:
        SimpleRenderSystem() = default;
        SimpleRenderSystem(const std::string& vertShaderPath, const std::string& fragShaderPath);
        explicit SimpleRenderSystem(ShaderProgram shaderProgram): shaderProgram{std::move(shaderProgram)} {};
        ~SimpleRenderSystem() = default;

        DELETE_COPY(SimpleRenderSystem);

        void renderGameObjects(std::vector<TmcGameObject>& gameObjects, const TmcCamera& camera);

    private:
        ShaderProgram shaderProgram{};
    };
}

#endif //TMC_SIMPLE_RENDER_SYSTEM_H
